/*
 * @Author: 朱泽源 zhuzy@phxg.cn
 * @Date: 2024-04-30 14:48:50
 * @LastEditors: 朱泽源 zhuzy@phxg.cn
 * @LastEditTime: 2024-04-30 16:12:27
 * @FilePath: \home\webpack.config.js
 * @Description: 
 * 
 * Copyright (c) 2024 by 朱泽源 , All Rights Reserved. 
 */
const HtmlWebpackPlugin = require('html-webpack-plugin');
// 引入webpack
const ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin');
module.exports = {
    entry: './src/index.js',//入口
    mode: 'development',//模式
    devtool: 'source-map',//生成source-map
    devServer: {
        port: 8080
    },
    output: {//清除输出目录
        clean: true
    },
    // module:{//配置loader
    //     rules:[
    //         {
    //             test: /\.css$/,
    //             use: ['style-loader','css-loader']
    //         }
    //     ]
    // },
    plugins: [//配置插件
        new HtmlWebpackPlugin(),
        new ModuleFederationPlugin({
            //模块联邦名称
            // 该名称将成为一个全部变量 通过该变量可获取在模块联邦中暴露的模块。
            name: "home",
            // 生成的文件名 全部变量将导入到该文件中。
            filename: "home-entry.js",
            exposes: {
                // key 模块联邦相对路径
                // value 模块具体路径
                './now': './src/now.js'
            },
            remotes: {
                // key 自定义远程暴露的联邦名
                // 比如abc 之后引用该模块需要使用 import "abc/模块名"
                // value 模块联邦名@模块联邦相访问地址
                active: "active@http://localhost:3000/active-entry.js"
            },
            shared: {
                // jquery 模块共享
                "jquery": {
                    singleton: true // 确保全局只有一个jquery实例
                }
            }
        })
    ]
}